package com.consumer0.demo;

import cn.hutool.Hutool;
import com.jobs.common.enums.ExchangeTypeEnum;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.MessageProperties;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

public class PublishAndConsumerType {
    public static void main(String[] args) throws IOException, TimeoutException {
        String message = "helloword1"+ Hutool.getAllUtils();
        //相当于数据库jdbc连接
        Connection connection = ConnectionConfig.getConnection();
        //相当于JDBc中的statement
        Channel channel = connection.createChannel();
        String EXCHANGE_NAME = "fanout.type.exchange";
        message = message+ EXCHANGE_NAME;
        //定义队列
        //参数1：定义队列名称
        // 2.是否持久化
        // 3.是否排外（当连接关闭是，是否删除这个队列）
        // 4.自动删除（当此队列的连接数为0的时候，此队列会销毁，无论队列是否还有数据）
        //5.设置当前队列的参数
        // channel.exchangeDeclare(exchangeName, "fanout");
        channel.exchangeDeclare(EXCHANGE_NAME, ExchangeTypeEnum.FANOUT.name());
        String queueName = channel.queueDeclare().getQueue();
        channel.queueBind(queueName, EXCHANGE_NAME, "");

        //参数
//        1.交换机名称，如果直接发送到消息队列，则交换机名称为“”空
//        2.目标队列名称
        //3.设置当前这条消息的时间
        //4.参数4.消息的内容
        //ps：如果是路由模式 设置交换机后，第二个参数标识为key，而不队列

        channel.basicPublish(EXCHANGE_NAME, "", MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes(StandardCharsets.UTF_8));
        System.out.println("发送"+message);
        channel.close();
        connection.close();
    }
}
